package com.pureut.storage.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pureut.storage.domain.SalesReturn;
import com.pureut.storage.domain.WipCompletion;
import com.pureut.storage.dto.*;
import com.pureut.storage.vo.ImparityVo;
import com.pureut.storage.vo.WipCompletionVo;
import com.pureut.storage.vo.WipOtherAddVo;
import com.sale.common.mybatis.core.mapper.BaseMapperPlus;
import com.sale.storage.api.dto.WipCompletionMessageDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/***
 * 完工入库mapper
 * Author:C
 * Date:2022/12/30 11:56
 * @DESC
 */
@Mapper
public interface WipCompletionMapper extends BaseMapperPlus<WipCompletionMapper, WipCompletion, WipCompletion> {

    /**
     * 完工入库列表
     */
    Page<WipCompletionDto> getWipCompletionList(@Param("page") Page<WipCompletionDto> page, @Param("wipCompletionVo") WipCompletionVo wipCompletionVo);


    /**
     * 根据id获取完工入库详情
     */
    WipCompletionDto getWipCompletionById(long id);

    /**
     * 完工入库列表手持pda-自动生成
     */
    List<AndroidPdaDto> getWipCompletionAndroidList(Long deptId);

    /**
     * 完工入库列表手持pda-手动生成
     */
    Page<AndroidPdaDto> getWipCompletionAndroidManualList(@Param("deptId") Long deptId,@Param("page") Page<AndroidPdaDto> page);

    /**
     * 根据id获取完工入库详情-自动生成
     */
    AndroidPdaViewDto getWipCompletionViewById(long id);

    /**
     * 根据id获取完工入库详情-手动生成
     */
    AndroidPdaViewDto getWipCompletionViewAndroidManualById(long id);

    /**
     * 完工入库列表手持pda-手动生成
     */
    Page<AndroidPdaDto> getWipCompletionAndroidManualpickCancellationList(@Param("page") Page<AndroidPdaDto> page);

    /**
     * 根据多个id获取数据
     */
    List<WipCompletionExportDto> getDataByIdStr(@Param("idList") List<String> idList);

    /**
     * 完工入库列表(导出查询)
     */
    List<WipCompletionExportDto> getWipCompletionListOut(WipCompletionVo wipCompletionVo);

    /**
     * 根据制令单号获取自动生成数据
     */
    WipCompletionDto getAutoGenerationData(WipOtherAddVo wipOtherAddVo);

    /**
     * 多个列表查询数据（采购发票页面使用）
     */
    Page<ImparityDto> selectImparityList(@Param("page") Page<ImparityDto> page, @Param("imparityVo") ImparityVo imparityVo);

    /**
     * 根据单据号获取完工入库信息（成本调整使用）
     */
    WipCompletionMessageDto getWipCompletionMessage(String documentNumber);

    /**
     * 获取完工入库单中的入库仓库(成本调整使用)
     */
    List<WarehouseInDto> getWarehouseIn();

    /**
     * 筛选的仓库单据为已完成或已关结的完工入库单(成本调整使用)
     */
    Page<WipCompletionDto> screenDocument(@Param("wipCompletionVo") WipCompletionVo wipCompletionVo, @Param("page") Page<WipCompletionDto> page);

    /**
     * 查询仓库单据数据（结账反结账使用）
     */
    List<WipCompletionDto> getRClosingDocument(String time);

    /**
     * 根据物料编码获取采购入库及完工入库已完成、已关节状态单据信息
     */
    List<PrintDocumentDto> getWipCompletionDocumentMessage(String materialCode);
}
